package cn.lf.service.impl;

import cn.lf.dto.sys.dict.*;
import cn.lf.entity.SysDictData;
import cn.lf.mapper.SysDictDataMapper;
import cn.lf.service.ISysDictDataService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;
import java.util.UUID;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author guoyy
 * @since 2024-04-03
 */
@Service
public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {

    @Override
    public List<SysDictDataRepDTO> queryDictDataByType(SysDictDataReqDTO params) {
        return baseMapper.selectDictDataByType(params);
    }

    @Override
    public SysDictDataInfoDTO getSysDictDataById(String dictDataId) {

        SysDictDataInfoDTO result = new SysDictDataInfoDTO();

        SysDictData sysDictData = baseMapper.selectById(dictDataId);

        if (Objects.nonNull(sysDictData)){
            BeanUtils.copyProperties(sysDictData,result);
        }else {
            return null;
        }

        return result;
    }

    @Override
    public void saveSysDictData(SysDictDataSaveDTO sysDictDataSaveDTO) {

        if (Objects.nonNull(sysDictDataSaveDTO.getDictDataId())&&!Objects.equals(sysDictDataSaveDTO.getDictDataId(),"")){

            SysDictData sysDictData = new SysDictData();

            BeanUtils.copyProperties(sysDictDataSaveDTO,sysDictData);

            baseMapper.updateById(sysDictData);

        }else {

            SysDictData sysDictData = new SysDictData();

            BeanUtils.copyProperties(sysDictDataSaveDTO,sysDictData);

            sysDictData.setDictDataId(UUID.randomUUID().toString());

            baseMapper.insert(sysDictData);
        }



    }

    @Override
    public void delSysDictData(String dictDataId) {

        baseMapper.deleteById(dictDataId);

    }

    @Override
    public List<DictDataInfoDTO> getDictDataByType(String typeCode) {
        return baseMapper.selectDictDataByTypeCode(typeCode);
    }
}
